/*********************************************
 * @autheur : CHOLLET Clément                *
 * @date    : 03.04.2013                     *
 * @version : 1.0 - Création de la classe    *
 *********************************************/

#include "materiaux.h"

//-----------------------------------------------------Constructeurs et destructeurs-----------------------------------------------------//

/****************************************************************************
 * Constructeur avec paramètres                                             *
 * On initialise les couleurs ambiante,diffuse,speculaire  avec les valeurs *
 * par défaut spécifier par OpenGL                                          *
 ****************************************************************************/
Materiaux::Materiaux()
{
    _couleurAmbiante[0] = 0.2f;
    _couleurAmbiante[1] = 0.2f;
    _couleurAmbiante[2] = 0.2f;
    _couleurAmbiante[3] = 1.0f;

    _couleurDiffuse[0] = 0.8f;
    _couleurDiffuse[1] = 0.8f;
    _couleurDiffuse[2] = 0.8f;
    _couleurDiffuse[3] = 1.0f;

    _couleurSpeculaire[0] = 0.0f;
    _couleurSpeculaire[1] = 0.0f;
    _couleurSpeculaire[2] = 0.0f;
    _couleurSpeculaire[3] = 1.0f;

    _couleurEmission[0] = 0.0f;
    _couleurEmission[1] = 0.0f;
    _couleurEmission[2] = 0.0f;
    _couleurEmission[3] = 1.0f;

    _brillanceSpeculaire = 0.0f;
}

//---------------------------------------------------------------Méthodes----------------------------------------------------------------//


//---------------------------------------------------------------Accesseurs--------------------------------------------------------------//

/****************************************************************************************
 * On affecte les valeurs RGBA à la variable _couleurAmbiante                           *
 * @param rouge: nouvelle valeur de la composante rouge de la variable _couleurAmbiante *
 * @param vert: nouvelle valeur de la composante verte de la variable _couleurAmbiante  *
 * @param bleu: nouvelle valeur de la composante bleue de la variable _couleurAmbiante  *
 * @param alpha: nouvelle valeur du paramètre alpha de la variable _couleurAmbiante     *
 ****************************************************************************************/
void Materiaux::setCouleurAmbiante(GLfloat rouge, GLfloat verte, GLfloat bleue, GLfloat alpha)
{
    _couleurAmbiante[0] = rouge;
    _couleurAmbiante[1] = verte;
    _couleurAmbiante[2] = bleue;
    _couleurAmbiante[3] = alpha;

}

/***************************************************************************************
 * On affecte les valeurs RGBA à la variable _couleurDiffuse                           *
 * @param rouge: nouvelle valeur de la composante rouge de la variable _couleurDiffuse *
 * @param vert: nouvelle valeur de la composante verte de la variable _couleurDiffuse  *
 * @param bleu: nouvelle valeur de la composante bleue de la variable _couleurDiffuse  *
 * @param alpha: nouvelle valeur du paramètre alpha de la variable _couleurDiffuse     *
 ***************************************************************************************/
void Materiaux::setCouleurDiffuse(GLfloat rouge, GLfloat verte, GLfloat bleue, GLfloat alpha)
{
    _couleurDiffuse[0] = rouge;
    _couleurDiffuse[1] = verte;
    _couleurDiffuse[2] = bleue;
    _couleurDiffuse[3] = alpha;
}

/******************************************************************************************
 * On affecte les valeurs RGBA à la variable _couleurSpeculaire                           *
 * @param rouge: nouvelle valeur de la composante rouge de la variable _couleurSpeculaire *
 * @param vert: nouvelle valeur de la composante verte de la variable _couleurSpeculaire  *
 * @param bleu: nouvelle valeur de la composante bleue de la variable _couleurSpeculaire  *
 * @param alpha: nouvelle valeur du paramètre alpha de la variable _couleurSpeculaire     *
 ******************************************************************************************/
void Materiaux::setCouleurSpeculaire(GLfloat rouge, GLfloat verte, GLfloat bleue, GLfloat alpha)
{
    _couleurSpeculaire[0] = rouge;
    _couleurSpeculaire[1] = verte;
    _couleurSpeculaire[2] = bleue;
    _couleurSpeculaire[3] = alpha;
}


/**********************************************************************
 * On affecte la valeur de la variable _brillanceSpeculaire           *
 * @param valeur: nouvelle valeur de la variable _brillanceSpeculaire *
 **********************************************************************/
void Materiaux::setBrillanceSpeculaire(GLfloat valeur)
{
    _brillanceSpeculaire = valeur;
}

/****************************************************************************************
 * On affecte les valeurs RGBA à la variable _couleurEmission                           *
 * @param rouge: nouvelle valeur de la composante rouge de la variable _couleurEmission *
 * @param vert: nouvelle valeur de la composante verte de la variable _couleurEmission  *
 * @param bleu: nouvelle valeur de la composante bleue de la variable _couleurEmission  *
 * @param alpha: nouvelle valeur du paramètre alpha de la variable _couleurEmission     *
 ****************************************************************************************/
void Materiaux::setCouleurEmission(GLfloat rouge, GLfloat verte, GLfloat bleue, GLfloat alpha)
{
    _couleurEmission[0] = rouge;
    _couleurEmission[1] = verte;
    _couleurEmission[2] = bleue;
    _couleurEmission[3] = alpha;
}

//------------------------------------------------------Surcharge des opérateurs---------------------------------------------------------//


